#include <iostream>
#include <fstream>
#include <map>
#include <string>
using namespace std;

typedef map<unsigned int, unsigned int>   mapuintuint;

#define DBG(X) if (debug) cerr << #X << " = " << X << endl;
#define DBGComment(String) if (debug) cerr << #String << endl;
#define DBGAssert(ExpresionBooleana) if (debug && ExpresionBooleana) cerr << #ExpresionBooleana << " ? " << false << endl;

bool debug = true;

bool esPar(unsigned int n)
{
    return (n&1)==0;
}

unsigned int iteracionesDe(unsigned int n)
{
    if(n == 1) return 1;
	unsigned int n_siguinte = n/2;
    if(!esPar(n))
		n_siguinte = 3 * n + 1;

	return 1 + iteracionesDe(n_siguinte);
}

unsigned int maxIteracionEntre(unsigned int desde, unsigned int hasta)
{
    unsigned int maximo, actual;
    maximo = actual = 0;

    for(unsigned int n = desde; n < hasta; n++)
    {
        actual = iteracionesDe(n);
        if(actual > maximo)
            maximo = actual;
    }
    return maximo;
}

int main()
{
    unsigned int desde, hasta;
    unsigned int max, min;

    while (cin >> desde >> hasta)
    {
        min = desde;
        max = hasta;
		if(desde > hasta)
		{
			max = desde;
			min = hasta;
		}

		cout << desde << ' ' << hasta << ' ' << maxIteracionEntre(min, (max+1)) << endl;

//        DBG(iteraciones.size());
//        mapuintuint::reverse_iterator it;
//        it = iteraciones.rbegin();
//        DBG(it->first);
    }
    //system("pause");
    return 0;
}
